package com.xsomnus.rpc.consumer.net;

import io.netty.channel.Channel;

import java.net.SocketAddress;
import java.util.List;

/**
 * @author @xsomnus666_xiawenye★
 * @since 2019/4/22 0022 16:49
 * 当你发现自己的才华撑不起野心时，就请安静下来学习吧
 */
public interface ConnectionManager {

    /**
     * 使用轮询的方式来获取通信通道
     */
    Channel chooseChannel();

    /**
     * 在节点数据发生改变的时候, 刷新各个节点
     */
    void refreshConnectedServer(List<String> addressList);

    /**
     * 连接服务节点
     */
    void connectServerNode(SocketAddress socketAddress);

    /**
     * 加入channel到连接管理器
     */
    void addChannel(Channel channel, SocketAddress socketAddress);

    /**
     * 从连接管理器中移除
     */
    void removeChannel(Channel channel);
}
